home *** CD-ROM | disk | FTP | other *** search
- #define SMTPTRACE /* enable tracing for smtp */
- #define MAXSESSIONS 10 /* most connections allowed */
- #define JOBNAME 13 /* max size of a job name with null */
- #define LINELEN 128
- #define SLINELEN 32
- #define MBOXLEN 8 /* max size of a mail box name */
-
- /* types of address used by smtp in an address list */
- #define BADADDR 0
- #define LOCAL 1
- #define DOMAIN 2
-
- /* a list entry */
- struct list {
- struct list *next;
- char *val;
- char type;
- };
-
- /* Per-session control block used by smtp server */
- struct smtpsv {
- int s; /* the socket for this connection */
- char *system; /* Name of remote system */
- char *from; /* sender address */
- struct list *to; /* Linked list of recipients */
- FILE *data; /* Temporary input file pointer */
- };
-
- /* used by smtpcli as a queue entry for a single message */
- struct smtp_job {
- struct smtp_job *next; /* pointer to next mail job for this system */
- char jobname[9]; /* the prefix of the job file name */
- char *from; /* address of sender */
- struct list *to; /* Linked list of recipients */
- };
-
- /* control structure used by an smtp client session */
- struct smtpcli {
- int s; /* connection socket */
- int32 ipdest; /* address of forwarding system */
- char state; /* state machine placeholder */
- #define CLI_INIT_STATE 0
- #define CLI_OPEN_STATE 1
- #define CLI_HELO_STATE 2
- #define CLI_MAIL_STATE 3
- #define CLI_RCPT_STATE 4
- #define CLI_SEND_STATE 5
- #define CLI_UNLK_STATE 6
- #define CLI_QUIT_STATE 7
- #define CLI_IDLE_STATE 8
- char *wname; /* name of workfile */
- char *tname; /* name of data file */
- char buf[LINELEN]; /* Input buffer */
- char cnt; /* Length of input buffer */
- FILE *tfile;
- struct smtp_job *jobq;
- char goodrcpt; /* are any of the rcpt ok */
- int rcpts; /* number of unacked rcpt commands */
- struct list *errlog;
- };
-
- /* smtp server routing mode */
- #define QUEUE 1
-
- #define NULLLIST (struct list *)0
- #define NULLSMTPSV (struct smtpsv *)0
- #define NULLSMTPCLI (struct smtpcli *)0
- #define NULLJOB (struct smtp_job *)0
-
- extern int Smtpmode;
- extern char *Mailspool;
- extern char *Maillog;
- extern char *Mailqdir; /* Outgoing spool directory */
- extern char *Routeqdir; /* spool directory for a router program */
- extern char *Mailqueue; /* Prototype of work file */
- extern char *Maillock; /* Mail system lock */
- extern char Hostname[];
- extern char *Alias; /* File of local aliases */
-
- /* In smtpserv.c: */
- char *ptime __ARGS((long *t));
- long get_msgid __ARGS((void));
- int validate_address __ARGS((char *s));
- int queuejob __ARGS((FILE *dfile,char *host,char *to,char *from));
- struct list *addlist __ARGS((struct list **head,char *val,int type));
-
- int mailuser __ARGS((FILE *data,char *from,char *to));
-
- /* In smtpcli.c: */
- int smtptick __ARGS((void *t));
- int mlock __ARGS((char *dir,char *id));
- int rmlock __ARGS((char *dir,char *id));
- void del_list __ARGS((struct list *lp));
- int32 mailroute __ARGS((char *dest));
-
-